/**
 * ZHU framework. Copyright 2012-, all rights reserved.
 *
 * $Id: AbstractEntityWithLongId.java 40 2012-09-13 01:38:05Z zhuxiaopeng $
 * $Revision: 40 $
 * $Date: 2012-09-13 09:38:05 +0800 (四, 2012-09-13) $
 * $Author: zhuxiaopeng $
 */
package zhu.framework.entity;

import javax.persistence.*;

/**
 * <p>
 * </p>
 * 
 * @author $Author: zhuxiaopeng $
 * @version $Revision: 40 $ - $Date: 2012-09-13 09:38:05 +0800 (四, 2012-09-13) $
 */
@MappedSuperclass
public abstract class AbstractEntityWithLongId extends AbstractEntity {

	/**
	 * <h3>スレッドセーフ性</h3>
	 * <p>
	 * この変数は<code>this</code>によってGuardされる。 この変数は<code>final</code>
	 * であり、参照先がスレッドセーフであるため、スレッドセーフ性を破ることはない。
	 * この変数の参照先はスレッドセーフ<strong>ではない</strong>。
	 * </p>
	 */
	private static final long serialVersionUID = 1L;

	/*
	 * (non-Javadoc)
	 * 
	 * @see zhu.framework.entity.Entity#getEntityId()
	 */
	@Override
	public EntityId getEntityId() {
		return EntityId.valueOf(entityId);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see zhu.framework.entity.Entity#getEntityVersion()
	 */
	@Override
	public EntityVersion getEntityVersion() {
		return EntityVersion.valueOf(entityVersion);
	}

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id")
	private Long entityId;

	@Version
	@Column(nullable = false)
	private long entityVersion;
}
